<?php
require_once 'ApibaseController.php';

/**
 * キャンペーンガール応募API<br/>
 *
 * @package apamanshop
 * @author H.Imamura
 * @copyright (c) 2012 SystemSoft Corp. All rights reserved
 */
class Inquiry_Campaigngirl2012sendController extends Inquiry_ApibaseController
{
	private $_mail_address = 'campaigngirl2012@apamanshop.co.jp';
	private $_imgpass = '';
	
	/**
	 * メインアクション
	 *
	 * @access public
	 * @return void
	 */
	public function indexAction()
	{
		if(APPLICATION_ENV == 'production') {
			$this->_imgpass      = $this->_config['apm']['apl']['image']['basepath'] . '/Original/campaign/cg2012';
		} else {
			$this->_imgpass      = $this->_config['apm']['apl']['image']['basepath'] . '/campaigngirl2012';
		}
		
		//--- メール判定 ---
		$this->setSendMailFlag($this->_params['Mail']);
		
		// 受付時間セット
		$now = time();
		$this->_params['EntryDate']    = Date('Ymd', $now);
		$this->_params['EntryDateDb']  = Date('YmdHis', $now);		// DB用
		$this->_params['EntryDateStr'] = Date('Y', $now).'年'.Date('m', $now).'月'.Date('d', $now).'日 '.Date('H', $now).'時'.Date('i', $now).'分';	// メール用
		
		// 年齢計算
		$age = intval(Date('Y', $now)) - intval($this->_params['Year']);
		if (intval(Date('m', $now)) < intval($this->_params['Month'])) {
			// -1
			$age = $age - 1;
		} else if (intval(Date('m', $now)) == intval($this->_params['Month'])) {
			if (intval(Date('d', $now)) < intval($this->_params['Day'])) {
				// -1
				$age = $age - 1;
			}
		}
		$this->_params['Age'] = $age;
		
		// ジャッジメールか
		if ($this->isSendHonbu()) {
			$this->_params['DelFlg'] = '0';
		} else {
			$this->_params['DelFlg'] = '2';
		}
		
		// モデルの呼び出し
		$this->_model = new Inquiry_Model_Campaigngirl2012();
		// トランザクション開始
		$db = $this->_model->getDbConnection();
		$this->_model->startTransaction($db);
		$result = 0;
		try {
			// ID取得
			$data = $this->_model->selectEntryId($db);
			if (empty($data['ID'])) {
				 $this->raiseError('ID取得エラー');
			}
			$ID = $data['ID'];
			$this->_params['Id'] = $ID;
			
			$id_pad = str_pad(strval($ID), 4, '0', STR_PAD_LEFT);
			// 画像名変換（Photo1）
			$ext = substr($this->_params['PhotoPath1'], strrpos($this->_params['PhotoPath1'], '.'));	// 拡張子取得
			$copyMoto1 = $this->_imgpass.'/'.$this->_params['PhotoPath1'];								// コピー元ファイル
			$copySaki1 = $this->_imgpass.'/'.$this->_params['DelFlg'].$id_pad.'_'.$this->_params['EntryDate'].'_1'.$ext;			// コピー先ファイル
			if (!copy($copyMoto1, $copySaki1)) {
				 $this->raiseError('画像ファイル送信エラー1');
			}
			$this->_params['Photo1'] = $this->_params['DelFlg'].$id_pad.'_'.$this->_params['EntryDate'].'_1'.$ext;
			// 画像名変換（Photo2）
			$ext = substr($this->_params['PhotoPath2'], strrpos($this->_params['PhotoPath2'], '.'));	// 拡張子取得
			$copyMoto2 = $this->_imgpass.'/'.$this->_params['PhotoPath2'];								// コピー元ファイル
			$copySaki2 = $this->_imgpass.'/'.$this->_params['DelFlg'].$id_pad.'_'.$this->_params['EntryDate'].'_2'.$ext;			// コピー先ファイル
			if (!copy($copyMoto2, $copySaki2)) {
				 $this->raiseError('画像ファイル送信エラー2');
			}
			$this->_params['Photo2'] = $this->_params['DelFlg'].$id_pad.'_'.$this->_params['EntryDate'].'_2'.$ext;
			
			// DB登録
			$result = $this->_model->insertEntryLog($this->_params, $db);
			if ($result == 0) {
				 $this->raiseError('DB登録エラー');
			}
			
			// 元ファイルを削除
			if (!unlink($copyMoto1)) {
				__log_debug(__FILE__, __LINE__, __METHOD__, "画像ファイル1削除エラー");
			}
			if (!unlink($copyMoto2)) {
				__log_debug(__FILE__, __LINE__, __METHOD__, "画像ファイル2削除エラー");
			}
			
			// メール送信処理
			$result =  $this->SendMailMain();
			if ($result == 0) {
				 $this->raiseError('メール送信エラー');
			}
			
			// コミット
			__log_debug(__FILE__, __LINE__, __METHOD__, "コミットします");
			$this->_model->commitTransaction($db);
			
			$result = 1;
		} catch (Exception $e) {
			__log_error(__FILE__, __LINE__, __METHOD__, $e->getMessage());
			
			// ロールバック
			__log_debug(__FILE__, __LINE__, __METHOD__, "ロールバックします");
			$this->_model->rollbackTransaction($db);
			
			$result = 0;
		}
		$db->closeConnection();
		
		// リダイレクトパラメータ設定
		$re_params = array();
		$re_params['result'] = $result;
		
		// 送信完了画面へリダイレクト
		Apm_Util::redirect($this->_config['apm']['baseurl'].'inquiry/campaigngirl2012/send/', $re_params);
		exit();
	}

	//メール送信制御
	private function SendMailMain()
	{
		$mailResult = false;
		
		// 本部メール送信
		$mailResult = $this->SendMailHonbu();
		
		// ユーザへメール送信
		if (!empty($this->_params['Mail']) && $mailResult) {
			$mailResult = $this->SendMailUser();
		}
		
		$result = 1;
		if (!$mailResult) {
			$result = 0;
		}
		return $result;
	}

	// 問い合わせユーザへのメール送信
	private function SendMailUser()
	{
		// from(送信元)、to（あて先)
		$strMailFrom = array($this->_mail_address => "第5回アパマンショップキャンペーンガール選考事務局");		//送信元ﾒｰﾙｱﾄﾞﾚｽ
		$strMailTo   = array($this->_params['Mail'] => "");					//送信先ﾒｰﾙｱﾄﾞﾚｽ
		
		// メール本文に必要なパラメータ
		$mail_params[Apm_Otheritems::SEND_MAIL_EX_SUBJECT_KEY] = "第5回アパマンショップキャンペーンガール";
		$mail_params[Apm_Otheritems::SEND_MAIL_EX_FROM_KEY] = $strMailFrom;
		$mail_params[Apm_Otheritems::SEND_MAIL_EX_TO_KEY] = $strMailTo;
		
		return $this->sendToiawaseMailJudge("campaigngirl/2012_user.tpl", $this->_params, $mail_params, 3);
	}

	// 本部メール送信
	private function SendMailHonbu()
	{
		$strMailFrom = array($this->_mail_address => "第5回アパマンショップキャンペーンガール選考事務局");		//送信元ﾒｰﾙｱﾄﾞﾚｽ
		$strMailTo   = array($this->_mail_address => "");		//送信先ﾒｰﾙｱﾄﾞﾚｽ
		//$strMailCc   = array(Apm_Config_Mail::MAIL_NETWORK_CALL => "");
		//$strMailBcc = array(Apm_Config_Mail::MAIL_NETWORK => "");
		
		// メール本文に必要なパラメータ
		$mail_params[Apm_Otheritems::SEND_MAIL_EX_SUBJECT_KEY] = "第5回アパマンショップキャンペーンガールWeb応募がありました。";
		$mail_params[Apm_Otheritems::SEND_MAIL_EX_FROM_KEY] = $strMailFrom;
		$mail_params[Apm_Otheritems::SEND_MAIL_EX_TO_KEY] = $strMailTo;
		//$mail_params[Apm_Otheritems::SEND_MAIL_EX_CC_KEY] = $strMailCc;
		//$mail_params[Apm_Otheritems::SEND_MAIL_EX_BCC_KEY] = $strMailBcc;
		
		return $this->sendToiawaseMailJudge("campaigngirl/2012_honbu.tpl", $this->_params, $mail_params, 1);
	}

	/**
	 * メインアクション(mobile)
	 *
	 * @access public
	 * @return void
	 */
	public function mobileAction()
	{
		// 結果
		$result = 0;
		$this->setSendMailFlag($this->_params['mail']);
		
		// メール本文に必要なパラメータ
		$strMailFrom = array($this->_mail_address => "第5回ｱﾊﾟﾏﾝｼｮｯﾌﾟｷｬﾝﾍﾟｰﾝｶﾞｰﾙ選考事務局");		//送信元ﾒｰﾙｱﾄﾞﾚｽ
		$strMailTo = array($this->_params['mail'] => "");
		$mail_params[Apm_Otheritems::SEND_MAIL_EX_SUBJECT_KEY] = "第5回ｱﾊﾟﾏﾝｼｮｯﾌﾟｷｬﾝﾍﾟｰﾝｶﾞｰﾙ";
		$mail_params[Apm_Otheritems::SEND_MAIL_EX_FROM_KEY] = $strMailFrom;
		$mail_params[Apm_Otheritems::SEND_MAIL_EX_TO_KEY] = $strMailTo;
		// メール送信
		$result = $this->sendToiawaseMailJudge("campaigngirl/2012mobile_user.tpl", array(), $mail_params, 3);
		
		// リダイレクトパラメータ設定
		$re_params = array();
		$re_params['result'] = $result;
		
		// 送信完了画面へリダイレクト
		Apm_Util::redirect($this->_config['apm']['baseurl'].'inquiry/campaigngirl2012/mobile/', $re_params);
		exit();
	}

}
?>
